package com.xieyong.leetcode;

import java.util.ArrayList;
import java.util.List;

public class Leetcode2200 {
    public static void main(String[] args) {
        Leetcode2200 leetcode2200 = new Leetcode2200();

        int[] nums = {3,4,9,1,3,9,5};
        int key = 9, k = 1;
        List<Integer> kDistantIndices = leetcode2200.findKDistantIndices(nums, key, k);
        for(Integer i : kDistantIndices) {
            System.out.println(i);
        }

    }


    public List<Integer> findKDistantIndices(int[] nums, int key, int k) {
        List<Integer> res = new ArrayList<>();
        int r = 0; // 未被判断过的最小下标
        int n = nums.length;
        for (int j = 0; j < n; ++j) {
            if (nums[j] == key) {
                int l = Math.max(r, j - k);
                r = Math.min(n - 1, j + k) + 1;
                for (int i = l; i < r; ++i) {
                    res.add(i);
                }
            }
        }
        return res;
    }

//   超时
//    public List<Integer> findKDistantIndices(int[] nums, int key, int k) {
//        List<Integer> res = new ArrayList<>();
//        for (int i = 0; i < nums.length; i++) {
//            if (nums[i] == key) {
//                for (int j = i - k; j <= i + k; j++) {
//                    if (j >= 0 && j < nums.length && !res.contains(j)) {
//                        res.add(j);
//                    }
//                }
//            }
//        }
//        return res;
//    }
}
